# 满足三个条件：
# 1、函数嵌套内部函数
# 2、内部函数使用外部函数参数
# 3、外部函数返回值是内部函数
# 闭包可以保留、修改外部函数值
# 闭包坏处：
# 内部函数一直引用外部函数
# 1、定义外部函数

global sums

def outer(num1):
    # 2、定义内部函数
    cnt = 1
    def inners(num2):
        sums = num1 + num2
        return sums
    return inners  # 外部函数返回内部函数地址


if __name__ == '__main__':

    func = outer(100)  # 获取inner 函数地址,保留外部函数num1=100值
    print(func(10))  # 执行内部函数
    print(func(30))
